home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Peter Lewis / Morpion 1.0.0 / source / PNL Libraries / MyOOAboutHelp.unit < prev    next >
Encoding:
Text File  |  1993-12-03  |  2.7 KB  |  135 lines  |  [TEXT/PJMM]

  1. unit MyOOAboutHelp;
  2.  
  3. interface
  4.  
  5.     uses
  6.         MyOOMainLoop;
  7.  
  8.     type
  9.         VerObject = object(DObject)
  10.                 global_object: ^WObject;
  11.                 text, styles: handle;
  12.                 procedure Create (id: integer);
  13.                 override;
  14.                 procedure Destroy;
  15.                 override;
  16.                 procedure DrawTextData;
  17.             end;
  18.  
  19.     procedure InitOOAboutHelp (var obj: VerObject);
  20.     procedure DoAboutHelp (var obj: VerObject; id: integer);
  21.     procedure SetAboutHelpMenu (themenu, theitem: integer; obj: VerObject);
  22.  
  23. implementation
  24.  
  25.     uses
  26.         MyUtils, MyDialogs, MyStrings, MyVersionResource, MySystemGlobals;
  27.  
  28.     const
  29.         text_item = 3;
  30.  
  31.     procedure DrawTextItem (dlg: dialogPtr; item: integer);
  32.     begin
  33.         VerObject(GetWObject(dlg)).DrawTextData;
  34.     end;
  35.  
  36.     procedure VerObject.DrawTextData;
  37.         var
  38.             te: TEHandle;
  39.             r: rect;
  40.     begin
  41.         GetDItemRect(window, text_item, r);
  42.  
  43.         te := TEStylNew(r, r);
  44.         HLock(text);
  45.         TEStylInsert(text^, GetHandleSize(text), StScrpHandle(styles), te);
  46.         HUnlock(text);
  47.  
  48.         TEUpdate(r, te);
  49.         TEDispose(te);
  50.     end;
  51.  
  52.     procedure VerObject.Create (id: integer);
  53.         var
  54.             s: str255;
  55.             k: integer;
  56.             h: handle;
  57.             r: rect;
  58.             te: TEHandle;
  59.             add: integer;
  60.             vers: versionRecord;
  61.     begin
  62.         text := nil;
  63.         styles := nil;
  64.         UseResFile(app_resfile);
  65.         SetVersionParamText('');
  66.         inherited Create(id);
  67.         GetWTitle(window, s);
  68.         GetVersion(vers);
  69.         SPrintS3(s, s, vers.name, '', '');
  70.         SetWTitle(window, s);
  71.         SetPort(window);
  72.         TextFont(geneva);
  73.         GetDItem(window, text_item, k, h, r);
  74.         if BAND(k, $7F) = userItem then begin
  75.             text := GetResource('TEXT', id);
  76.             if text <> nil then begin
  77.                 HNoPurge(text);
  78.                 styles := GetResource('styl', id);
  79.                 HNoPurge(styles);
  80.  
  81.                 te := TEStylNew(r, r);
  82.                 HLock(text);
  83.                 TEStylInsert(text^, GetHandleSize(text), StScrpHandle(styles), te);
  84.                 HUnlock(text);
  85.                 HPurge(text);
  86.                 HPurge(styles);
  87.  
  88.                 add := r.top - r.bottom + TEGetHeight(0, te^^.nLines, te);
  89.                 TEDispose(te);
  90.                 r.bottom := r.bottom + add;
  91.                 SetDItem(window, text_item, k, HANDLE(@DrawTextItem), r);
  92.                 r := window^.portRect;
  93.                 SizeWindow(window, r.right - r.left, r.bottom - r.top + add, false);
  94.             end;
  95.         end;
  96.     end;
  97.  
  98.     procedure VerObject.Destroy;
  99.     begin
  100.         global_object^ := nil;
  101.         if text <> nil then
  102.             ReleaseResource(text);
  103.         if styles <> nil then
  104.             ReleaseResource(styles);
  105.         inherited Destroy;
  106.     end;
  107.  
  108. {$S Init}
  109.     procedure InitOOAboutHelp (var obj: VerObject);
  110.     begin
  111.         obj := nil;
  112.     end;
  113.  
  114. {$S}
  115.     procedure DoAboutHelp (var obj: VerObject; id: integer);
  116.     begin
  117.         if obj <> nil then begin
  118.             if FrontWindow <> obj.window then
  119.                 SelectWindow(obj.window);
  120.         end
  121.         else begin
  122.             new(obj);
  123.             obj.global_object := @obj;
  124.             obj.Create(id);
  125.             ShowWindow(obj.window);
  126.         end;
  127.     end;
  128.  
  129.     procedure SetAboutHelpMenu (themenu, theitem: integer; obj: VerObject);
  130.     begin
  131.         SetIDItemEnable(themenu, theitem, not ISWObjectFront(obj));
  132.     end;
  133.  
  134.  
  135. end.